package com.white.framework.flow;

import com.white.framework.flow.enums.FlowNodeType;

/**
 * 节点结果处理器
 * @author white
 * @create 2020-11-30 16:54
 */
public interface FlowNodeJobResultProcessing<T extends FlowNodeType,R , M> {

    /**
     * 通过
     *
     * 当前节点最后状态为通过时，执行的方法
     *
     * @param businessNo 业务单号
     * @param nextNodeType 下一个节点
     * @param operatorId 操作员ID
     * @param operatorName 操作员名称
     * @param remarks 备注
     * @param data 执行器执行结束后中的额外参数
     */
    R pass(String businessNo, T nextNodeType, String operatorId, String operatorName, String remarks, M data);

    /**
     * 拒绝
     *
     * 当前节点最后状态为拒绝时，执行的方法
     *
     * @param businessNo 业务单号
     * @param nextNodeType 下一个节点
     * @param operatorId 操作员ID
     * @param operatorName 操作员名称
     * @param remarks 备注
     * @param data 执行器执行结束后中的额外参数
     */
    R reject(String businessNo, T nextNodeType, String operatorId, String operatorName, String remarks, M data);

    /**
     * 驳回
     *
     * 当前节点最后状态为驳回时，执行的方法
     *
     * @param businessNo 业务单号
     * @param nextNodeType 下一个节点
     * @param operatorId 操作员ID
     * @param operatorName 操作员名称
     * @param remarks 备注
     * @param data 执行器执行结束后中的额外参数
     */
    R refuse(String businessNo, T nextNodeType, String operatorId, String operatorName, String remarks, M data);

}
